import Agently
workflow = Agently.Workflow()
sub_workflow = Agently.Workflow()

@workflow.chunk()
def send_list(inputs, storage):
    return [1, 2, 3]

@workflow.chunk()
def print_to_chunk_inputs(inputs, storage):
    print("[to chunk inputs]: ", inputs)
    return

# 对子工作流中的数据进行解析和传递
@sub_workflow.chunk()
def print_sub_workflow_inputs(inputs, storage):
    # 在这里对sub_workflow起点块对默认的"default"端点输入的数据进行解析
    print("[sub workflow inputs]: ", inputs["default"])
    # 向下游传递时，也只传递从"default"中取出的数据
    # 其实这一段模拟的是我们在真实场景中，对输入数据的处理逻辑
    # 通常我们都会基于输入数据，撰写更多的业务逻辑，然后将业务逻辑结果向下传递
    # 而不是直接将输入数据向下传递
    return inputs["default"]

(
    sub_workflow
        .connect_to("print_sub_workflow_inputs")
        # 传递结果时，传递到END块的"return_value"端点
        # 而不是默认的"default"端点
        .connect_to("END.return_value")
)

(
    workflow
        .connect_to("send_list")
        .loop_with(sub_workflow)
        # 承接结果时，使用"print_to_chunk_inputs"的"input_handle"端点
        # 而不是默认的"default"端点
        .connect_to("print_to_chunk_inputs.input_handle")
        .connect_to("END")
)

workflow.start()